# [cookies](https://nextjs.org/docs/app/api-reference/functions/cookies 'cookies')

cookie功能允许您从服务器组件读取HTTP传入请求cookie，或者在服务器操作或路由处理程序中写入传出请求cookie。

## cookies().get(name)

一个方法，它接受一个cookie名称并返回一个带有名称和值的对象。如果没有找到带有name的cookie，则返回undefined。如果多个cookie匹配，它将只返回第
一个匹配。

```
import { cookies } from 'next/headers'

export default function Page() {
  const cookieStore = cookies()
  const theme = cookieStore.get('theme')
  return '...'
}
```

## cookies().getAll()

一个类似于get的方法，但返回具有匹配名称的所有cookie的列表。如果name未指定，则返回所有可用的cookie。

```
import { cookies } from 'next/headers'

export default function Page() {
  const cookieStore = cookies()
  return cookieStore.getAll().map((cookie) => (
    <div key={cookie.name}>
      <p>Name: {cookie.name}</p>
      <p>Value: {cookie.value}</p>
    </div>
  ))
}
```

## cookies().has(name)

一个接受cookie名称并根据cookie是否存在(true)或不存在(false)返回布尔值的方法。

```
import { cookies } from 'next/headers'

export default function Page() {
  const cookieStore = cookies()
  const hasCookie = cookieStore.has('theme')
  return '...'
}
```

## cookies().set(name, value, options)

一个接受cookie名称、值和选项并设置传出请求cookie的方法。

```
'use server'

import { cookies } from 'next/headers'

async function create(data) {
  cookies().set('name', 'lee')
  // or
  cookies().set('name', 'lee', { secure: true })
  // or
  cookies().set({
    name: 'name',
    value: 'lee',
    httpOnly: true,
    path: '/',
  })
}
```

## cookies().delete(name)

您可以显式地删除具有给定名称的cookie。

```
'use server'

import { cookies } from 'next/headers'

async function delete(data) {
  cookies().delete('name')
}
```

## cookies().set(name, '')

你可以设置一个具有相同名称和空值的新cookie

```
'use server'

import { cookies } from 'next/headers'

async function delete(data) {
  cookies().set('name', '')
}
```

## cookies().set(name, value, maxAge)

将maxAge设置为0将立即使cookie过期

```
'use server'

import { cookies } from 'next/headers'

async function delete(data) {
  cookies().set('name', 'value', { maxAge: 0 })
}
```

## cookies().set(name, value, expires )

将expires设置为过去的任何值将立即使cookie过期

```
'use server'

import { cookies } from 'next/headers'

async function delete(data) {
  const oneDay = 24 * 60 * 60 * 1000
  cookies().set('name', 'value', { expires: Date.now() - oneDay })
}
```
